﻿
namespace ThreeByte.ActiveDeck.Web.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies ConfigMetadata as the class
    // that carries additional metadata for the Config class.
    [MetadataTypeAttribute(typeof(Config.ConfigMetadata))]
    public partial class Config
    {

        // This class allows you to attach custom attributes to properties
        // of the Config class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ConfigMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ConfigMetadata() {
            }

            public string Parameter { get; set; }

            public string Value { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PresentationMetadata as the class
    // that carries additional metadata for the Presentation class.
    [MetadataTypeAttribute(typeof(Presentation.PresentationMetadata))]
    public partial class Presentation
    {

        // This class allows you to attach custom attributes to properties
        // of the Presentation class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PresentationMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PresentationMetadata() {
            }

            public EntityCollection<CategorySubmission> CategorySubmissions { get; set; }

            public DateTime Created { get; set; }

            public string ID { get; set; }

            public Nullable<DateTime> LastModified { get; set; }

            public Nullable<DateTime> LastPresented { get; set; }

            public EntityCollection<MultipleChoice> MultipleChoices { get; set; }

            public string Name { get; set; }

            public EntityCollection<PresentationConfig> PresentationConfigs { get; set; }

            public int PresentationCount { get; set; }

            public PresentationState PresentationState { get; set; }

            public EntityCollection<ShortAnswer> ShortAnswers { get; set; }

            public int UserAccess { get; set; }

            public Nullable<int> Version { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PresentationConfigMetadata as the class
    // that carries additional metadata for the PresentationConfig class.
    [MetadataTypeAttribute(typeof(PresentationConfig.PresentationConfigMetadata))]
    public partial class PresentationConfig
    {

        // This class allows you to attach custom attributes to properties
        // of the PresentationConfig class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PresentationConfigMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PresentationConfigMetadata() {
            }

            public Presentation Presentation { get; set; }

            public string PresentationID { get; set; }

            public int Version { get; set; }

            public string XML { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PresentationStateMetadata as the class
    // that carries additional metadata for the PresentationState class.
    [MetadataTypeAttribute(typeof(PresentationState.PresentationStateMetadata))]
    public partial class PresentationState
    {

        // This class allows you to attach custom attributes to properties
        // of the PresentationState class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PresentationStateMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PresentationStateMetadata() {
            }

            public Presentation Presentation { get; set; }

            public string PresentationID { get; set; }

            public string SectionData { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies PresenterMetadata as the class
    // that carries additional metadata for the Presenter class.
    [MetadataTypeAttribute(typeof(Presenter.PresenterMetadata))]
    public partial class Presenter
    {

        // This class allows you to attach custom attributes to properties
        // of the Presenter class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PresenterMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private PresenterMetadata() {
            }

            public string PresentationID { get; set; }

            public string UserName { get; set; }
        }
    }
}
